﻿using BLLUtilidades;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BLLConDes
{
    public class BLLCategoria : BLLPadre<ConDescuentoDataContext>
    {
        public BLLCategoria(ConDescuentoDataContext contexto) : base(contexto) { }
        public BLLCategoria() : this(new ConDescuentoDataContext()) { }

        public List<CD_Categoria> TraerPadres()
        {
            return (from c in Contexto.CD_Categorias
                    where c.IdCategoriaPadre == null
                    select c).ToList();
        }

        public CD_Categoria TraerCategoria(int idCategoria)
        {
            return Contexto.CD_Categorias.Where(c => c.IdCategoria == idCategoria).FirstOrDefault();
        }

        public List<CD_Categoria> TraerCategorias()
        {
            return (from c in Contexto.CD_Categorias
                    orderby c.Nombre
                    select c).ToList();
        }

        public void Eliminar(int idCategoria)
        {
            CD_Categoria categoria = TraerCategoria(idCategoria);
            Contexto.CD_Categorias.DeleteOnSubmit(categoria);
        }

        public void CargarNueva(CD_Categoria categoria)
        {
            Contexto.CD_Categorias.InsertOnSubmit(categoria);
        }

        public void EditarCategoria(CD_Categoria categoria)
        {
            CD_Categoria cat = TraerCategoria(categoria.IdCategoria);
            cat.Nombre = categoria.Nombre;

            if (categoria.CD_Categoria1 == null)
                cat.CD_Categoria1 = null;
            else
                cat.CD_Categoria1 = TraerCategoria(cat.IdCategoriaPadre.Value);
        }
    }
}
